package control;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import model.bean.Curso;
import model.bean.Modulo;
import model.bean.Professor;
import model.bean.Turma;
import model.bo.AcademicoBO;

/**
 * @author ludemeury
 *
 */
public class ProfessorIndicacaoMB {
	
	private List<Curso> cursos;
	private List<Modulo> modulos;
	private List<Turma> turmas;
	private Professor professor;
	private Curso curso;
	private Modulo modulo;
	private Date dateTermino;
	private AcademicoBO academicoDao;
	private Long idCurso;
	private Long idModulo;
	private List<SelectItem> itensCursos;
	private List<SelectItem> itensModulos;

	public ProfessorIndicacaoMB(){
		this.academicoDao = new AcademicoBO();
		this.curso = new Curso();
		this.modulo = new Modulo();
		this.professor = new Professor();
		this.professor.setId(new Long(1));
		itensCursos = new ArrayList<SelectItem>();
		itensModulos = new ArrayList<SelectItem>();
	}
	
	public String carregar(){
		this.professor = academicoDao.getProfessor(professor);
		itensModulos.clear();
		itensCursos.clear();
		preencherItensCursos();
		return "turmasProfessor";
	}

	/*public String indicar(){
		return "indicarTurma";
	}
*/	
	public void carregar(ActionEvent event){
		try{
		preencherItensCursos();
		}catch (Exception e) {
			
		}
	}
	
	public List<Turma> getTurmas() {
		return turmas;
	}


	public void setTurmas(List<Turma> turmas) {
		this.turmas = turmas;
	}


	public Long getIdModulo() {
		return idModulo;
	}


	public void setIdModulo(Long idModulo) {
		this.idModulo = idModulo;
	}


	public List<SelectItem> getItensModulos() {
		return itensModulos;
	}


	public void setItensModulos(List<SelectItem> itensModulos) {
		this.itensModulos = itensModulos;
	}


	public List<SelectItem> getItensCursos() {
		return itensCursos;
	}

	public void setItensCursos(List<SelectItem> itensCursos) {
		this.itensCursos = itensCursos;
	}

	public Long getIdCurso() {
		return idCurso;
	}

	public void setIdCurso(Long idCurso) {
		this.idCurso = idCurso;
	}
	
	
	public Professor getProfessor() {
		return professor;
	}


	public void setProfessor(Professor professor) {
		this.professor = professor;
	}


	public Date getDateTermino() {
		return dateTermino;
	}

	public void setDateTermino(Date dateTermino) {
		this.dateTermino = dateTermino;
	}
	
	public void carregarModulos(ActionEvent event){
		this.preencherItensModulos();
	}
	
	public void carregarTurmas(ActionEvent event){
			preencherTabelaTurmas();
	}
	
	private void preencherItensCursos(){
		cursos = academicoDao.getCursos();
		for (Curso curso : this.cursos) {
			this.getItensCursos().add(new SelectItem(curso.getId(), curso.getNome()));
		}
	}

	private void preencherItensModulos(){
		this.getItensModulos().clear();
		this.curso.setId(this.idCurso);
		this.modulos = academicoDao.getModulos(this.curso);
		for (Modulo modulo : this.modulos) {
			this.getItensModulos().add(new SelectItem(modulo.getId(), modulo.getNome()));
		}
	}
	
	private void preencherTabelaTurmas(){
		curso.setId(this.getIdCurso());
		modulo.setId(this.getIdModulo());
		turmas = academicoDao.getTurmas(professor,curso, modulo, dateTermino);
	}
}
